﻿using System;

namespace GeoAPI.CoordinateSystems
{
	public interface ICoordinateSystemAuthorityFactory
	{
		string Authority { get; }

		IProjectedCoordinateSystem CreateProjectedCoordinateSystem(long code);

		IGeographicCoordinateSystem CreateGeographicCoordinateSystem(long code);

		IHorizontalDatum CreateHorizontalDatum(long code);

		IEllipsoid CreateEllipsoid(long code);

		IPrimeMeridian CreatePrimeMeridian(long code);

		ILinearUnit CreateLinearUnit(long code);

		IAngularUnit CreateAngularUnit(long code);

		IVerticalDatum CreateVerticalDatum(long code);

		IVerticalCoordinateSystem CreateVerticalCoordinateSystem(long code);

		ICompoundCoordinateSystem CreateCompoundCoordinateSystem(long code);

		IHorizontalCoordinateSystem CreateHorizontalCoordinateSystem(long code);

		string DescriptionText { get; }

		string GeoidFromWktName(string wkt);

		string WktGeoidName(string geoid);
	}
}
